/*  This file is part of Real Time Digital Audio Processing library.
 *  Copyright (C) 2008 - Emilio Monti - emilmont@gmail.com
 *
 *  Real Time Digital Audio Processing library is free software: you can
 *  redistribute it and/or modify it under the terms of the GNU General
 *  Public License as published by the Free Software Foundation, either
 *  version 2 of the License, or (at your option) any later version.
 *
 *  Real Time Digital Audio Processing library is distributed in the hope
 *  that it will be useful, but WITHOUT ANY WARRANTY; without even the
 *  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See the GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with Real Time Audio Processing library.
 *  If not, see <http://www.gnu.org/licenses/>.
 */
#include <math.h>

#include "RMS.h"

RMS::RMS(unsigned int sampleRate, float window_ms) {
    sprintf(descr, "[=] RMS window:(%0.1f)ms\n", window_ms);
    window = (unsigned int)(((float)sampleRate/1000.)*window_ms);
    sum_square = 0.;
    index = 0;
}

void RMS::processSignal(float* signal, unsigned long length) {
    for (unsigned int i=0; i<length; i++) {
        sum_square += signal[i]*signal[i];

        index++;
        if (index >= window) {
            value = sqrt(sum_square/window);
            sum_square = 0.0;
            index = 0;
        }
    }
}
